Show layout children in the inspector
authorMatthias Clasen <mclasen@redhat.com>
Fri, 5 Apr 2019 19:15:16 +0000 (19:15 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 5 Apr 2019 19:15:55 +0000 (19:15 +0000)
gtk/inspector/prop-list.c
gtk/inspector/prop-list.h
gtk/inspector/window.c
gtk/inspector/window.h
gtk/inspector/window.ui

index 4e0c9e9b00bae3b449916029469998a91a5ca48f..60096bbc659d073255396013de9dc369b80fc6ca 100644 (file)
@@ -38,6 +38,7 @@
 #include "gtkmain.h"
 #include "gtkstack.h"
 #include "gtkeventcontrollerkey.h"
+#include "gtklayoutmanager.h"
 
 enum
 {
@@ -502,4 +503,39 @@ gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
   return TRUE;
 }
 
+void
+gtk_inspector_prop_list_set_layout_child (GtkInspectorPropList *pl,
+                                          GObject              *object)
+{
+  GtkWidget *stack;
+  GtkStackPage *page;
+  GtkWidget *parent;
+  GtkLayoutManager *layout_manager;
+  GtkLayoutChild *layout_child;
+
+  stack = gtk_widget_get_parent (GTK_WIDGET (pl));
+  page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (pl));
+  g_object_set (page, "visible", FALSE, NULL);
+
+  if (!GTK_IS_WIDGET (object))
+    return;
+
+  parent = gtk_widget_get_parent (GTK_WIDGET (object));
+  if (!parent)
+    return;
+
+  layout_manager = gtk_widget_get_layout_manager (parent);
+  if (!layout_manager)
+    return;
+
+  layout_child = gtk_layout_manager_get_layout_child (layout_manager, GTK_WIDGET (object));
+  if (!layout_child)
+    return;
+
+  if (!gtk_inspector_prop_list_set_object (pl, G_OBJECT (layout_child)))
+    return;
+  
+  g_object_set (page, "visible", TRUE, NULL);
+}
+
 // vim: set et sw=2 ts=2:
index 9c293f4bc71e21cdf566b65e7e3ce7dcbb00b26b..ad7219f13b68e76b65f3bbb6a2c29cac42c25be1 100644 (file)
@@ -53,6 +53,9 @@ G_BEGIN_DECLS
 GType      gtk_inspector_prop_list_get_type   (void);
 gboolean   gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
                                                GObject              *object);
+void gtk_inspector_prop_list_set_layout_child (GtkInspectorPropList *pl,
+                                               GObject              *object);
+
 
 G_END_DECLS
 
index 2fae04950c029ce5ca944ea673d52d26e7115e1f..2bf2a35dea6c26472650a16f6f0b28364189c3f2 100644 (file)
@@ -53,6 +53,7 @@
 #include "gtktreeviewcolumn.h"
 #include "gtkwindowgroup.h"
 #include "gtkrevealer.h"
+#include "gtklayoutmanager.h"
 
 G_DEFINE_TYPE (GtkInspectorWindow, gtk_inspector_window, GTK_TYPE_WINDOW)
 
@@ -70,6 +71,7 @@ set_selected_object (GtkInspectorWindow *iw,
   gtk_label_set_label (GTK_LABEL (iw->object_title), title);
   g_free (title);
 
+  gtk_inspector_prop_list_set_layout_child (GTK_INSPECTOR_PROP_LIST (iw->layout_prop_list), selected);
   gtk_inspector_misc_info_set_object (GTK_INSPECTOR_MISC_INFO (iw->misc_info), selected);
   gtk_inspector_css_node_tree_set_object (GTK_INSPECTOR_CSS_NODE_TREE (iw->widget_css_node_tree), selected);
   gtk_inspector_size_groups_set_object (GTK_INSPECTOR_SIZE_GROUPS (iw->size_groups), selected);
@@ -329,6 +331,7 @@ gtk_inspector_window_class_init (GtkInspectorWindowClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, object_details_button);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, select_object);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, prop_list);
+  gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, layout_prop_list);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, widget_css_node_tree);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, widget_recorder);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorWindow, object_title);
index a6dafde9e409487b9c83949960662c6f75e1ce35..c227782cc2232585f4405a38a6072828e816a5da 100644 (file)
@@ -56,10 +56,9 @@ typedef struct
   GtkWidget *object_center_stack;
   GtkWidget *object_title;
   GtkWidget *prop_list;
-  GtkWidget *child_prop_list;
+  GtkWidget *layout_prop_list;
   GtkWidget *selector;
   GtkWidget *signals_list;
-  GtkWidget *style_prop_list;
   GtkWidget *classes_list;
   GtkWidget *widget_css_node_tree;
   GtkWidget *widget_recorder;
index e3fcaa73f0a5f66b031d5ffcc01cbd49d6c0e59c..f6eacaf9392491eb6082750f141c5aa57402e053 100644 (file)
                                         </property>
                                       </object>
                                     </child>
+                                    <child>
+                                      <object class="GtkStackPage">
+                                        <property name="name">layout-prop-search</property>
+                                        <property name="child">
+                                          <object class="GtkSearchEntry" id="layout_prop_search_entry">
+                                            <property name="margin">6</property>
+                                            <property name="max-width-chars">40</property>
+                                          </object>
+                                        </property>
+                                      </object>
+                                    </child>
                                   </object>
                                 </child>
                               </object>
                                     </property>
                                   </object>
                                 </child>
+                                <child>
+                                  <object class="GtkStackPage">
+                                    <property name="name">layout_properties</property>
+                                    <property name="title" translatable="yes">Layout</property>
+                                    <property name="child">
+                                      <object class="GtkInspectorPropList" id="layout_prop_list">
+                                        <property name="object-tree">object_tree</property>
+                                        <property name="search-entry">layout_prop_search_entry</property>
+                                      </object>
+                                    </property>
+                                  </object>
+                                </child>
                                 <child>
                                   <object class="GtkStackPage">
                                     <property name="name">css-nodes</property>